﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Negocio;
using Business.Entities;

namespace UI.Desktop
{
    public partial class EspecialidadDesktop : ApplicationForm
    {
        

        private Especialidad esp;

        public Especialidad EspecialidadActual
        {
            get { return esp; }
            set { esp = value; }
        }

        public EspecialidadDesktop()
        {
            InitializeComponent();
        }


        public EspecialidadDesktop(modoForm modo)
        {
            InitializeComponent();
           ModoForm=modo;
                                 
        }

        public EspecialidadDesktop(int ID, modoForm modo) 
        {
            InitializeComponent();
            ModoForm = modo;
            EspecialidadLogic el = new EspecialidadLogic();
            EspecialidadActual = el.getOne(ID);
            this.MapearDeDatos();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (this.Validar())
            {
                this.GuardarCambios();
                Close();
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        public override bool Validar() 
        { 
           if (this.txtDescripcion.Text=="")
            {
               this.Notificar("Error", "Rellenar los campos requeridos",MessageBoxButtons.OK,MessageBoxIcon.Error);
               return false; 
            
            }
            
            else
            {
                return true;
            
            }                 
        }

        public override void GuardarCambios()
        {
            this.MapearADatos();
            EspecialidadLogic el = new EspecialidadLogic();
            if (ModoForm == modoForm.Baja)
            {
                EspecialidadActual.State= BussinessEntity.States.Deleted;
                el.delete(EspecialidadActual.ID);
            }
            el.save(EspecialidadActual);
        }

        public override void MapearADatos()
        {
            if (ModoForm == modoForm.Alta)
            {
                Especialidad esp = new Especialidad();
                EspecialidadActual = esp;
                this.EspecialidadActual.State= BussinessEntity.States.New;
                

            }
           if (ModoForm == modoForm.Modificacion)
            {
                this.EspecialidadActual.ID = Convert.ToInt32(this.txtId.Text);
                this.EspecialidadActual.State = BussinessEntity.States.Modified;
            }
           this.EspecialidadActual.Descripcion = this.txtDescripcion.Text;
        }

        public override void MapearDeDatos()
        {
            this.txtId.Text = this.EspecialidadActual.ID.ToString();
            this.txtDescripcion.Text = this.EspecialidadActual.Descripcion;
           
            if (ModoForm == modoForm.Alta || ModoForm == modoForm.Modificacion)
            {

                this.btnAceptar.Text = "Guardar";
            }
            else
            {
                if (ModoForm == modoForm.Baja)
                {
                    this.txtDescripcion.Enabled = false;
                    
                    this.btnAceptar.Text = "Eliminar";

                }
                else
                {
                    if (ModoForm == modoForm.Consulta)
                    {
                        this.btnAceptar.Text = "Aceptar";
                    }

                }

            }

        }




    }
}
